<!DOCTYPE html>
<div id="outerStrict" style="contain:strict;">
    <div id="multicol" style="columns:1; writing-mode:vertical-lr;">
        <div id="multicolChild"></div>
        <div id="notMarkedForLayout">
            <div id="innerStrict" style="contain:strict;">
                <table>
                    <thead id="thead"></thead>
                    <tbody>
                        <tr></tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
    test(() => {
        document.body.offsetTop;
        // Will mark everything from #thead up to #innerStrict for layout
        document.getElementById("thead").style.display = "none";
        // Will mark everything from #multicolChild to #outerStrict for layout
        document.getElementById("multicolChild").style.display = "none";

        // At this point #notMarkedForLayout will remain not marked for layout,
        // while both its parent and its child will be marked for
        // layout. #innerStrict and #outerStrict can be laid out as separate
        // subtrees in the next layout phase. #multicol establishes an
        // orthogonal writing mode root. Writing mode roots need to be laid out
        // before their ancestors (in order to get min/max intrinsic inline
        // sizes correct). It is now important that the three objects
        // (#innerStrict, #multicol, #outerStrict) be laid out in depth-first
        // order, so that we don't skip over subtrees that need layout.
    }, "no crash or assertion failure");
</script>
